package util;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class LoginInterceptor implements HandlerInterceptor {

    /**
     * Handler执行完成之后调用这个方法
     */
    public void afterCompletion(HttpServletRequest request,
                                HttpServletResponse response, Object handler, Exception exc)
            throws Exception {

    }

    /**
     * Handler执行之后，ModelAndView返回之前调用这个方法
     */
    public void postHandle(HttpServletRequest request, HttpServletResponse response,
                           Object handler, ModelAndView modelAndView) throws Exception {
    }

    /**
     * Handler执行之前调用这个方法
     */
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                             Object handler) throws Exception {
        //获取请求的URL
        String url = request.getRequestURI();
        //URL:login.jsp是公开的;这个demo是除了login.jsp是可以公开访问的，其它的URL都进行拦截控制
        if (url.indexOf("login") >= 0 ||
                url.indexOf("/index.html") >= 0 ||
                url.equals("/") ||
                url.indexOf("webLogin") >= 0 ||
                url.indexOf("error") >= 0 ||
                url.indexOf("admin-login") >= 0 ||
                url.indexOf("MP_verify_P5ulzWgjbyc1EZxv.txt") >= 0 ||
                url.indexOf("wechat") >= 0) {
            return true;
        }
        // 获取Session
        HttpSession session = request.getSession();
        // 在session中获取openId属性
        String openId = (String) session.getAttribute("openId");
        // 在session中获取admin属性
        String username = (String) session.getAttribute("username");

        // 管理后台请求，在这里处理
        if (url.indexOf("admin") >= 0) {
            // 如果获取到的admin属性不为空，管理员已登录，放行
            if (username != null) {
                return true;
            } else {
                //不符合条件(在session中没有用户登录信息)的，跳转到登录界面
                response.getWriter().append("<script>location.href='admin-login.html'</script>");
                return false;
            	/*request.getSession().setAttribute("username", "admin");
            	return true;*/
            }
        }

        // 用户请求
        // 如果openId不为空，用户已登录，放行
        if (openId != null) {
            return true;
        }
        //不符合条件的，跳转到登录界面
        response.getWriter().append("<script>location.href='login.html'</script>");
        return false;
    }
}
